package com.simple.config;

import lombok.Data;

import java.util.List;

/**
 * 项目名称：foursmile-local-etl
 * 类名称：SyncTaskConfig
 * 类描述：SyncTaskConfig
 * 创建时间：2022/10/18
 *
 * @author jiangjunjie   (E-mail:jiangjunjie@foursmile001.com)
 * @version v1.0
 */
@Data
public class SyncTaskConfig {

    private String taskName;



    /**
     * 来源库查询sql 不可为空
     */
    private String selectSql;

    /**
     * 目标库查询sql
     * <p>
     * 可以为空，为空情况下与selectSql一致。
     */
    private String targetSelectSql;

    /**
     * 目标库表名
     * <p>
     * 生成sql用
     */
    private String tableName;

    /**
     * 比对策略
     */
    private ContrastStrategy contrastStrategy;

    @Data
    public static class ContrastStrategy {

        /**
         * 指定主键，不同场景下可能是表主键，或业务主键。
         */
        private List<String> primaryKey;

        /**
         * 同步新增数据时，可以指定忽略某些字段。
         */
        private List<String> insertIgnore;

        private Boolean enableUpdate = true;

        private Boolean bulkInsert = false;

        private Boolean bulkDelete = false;

        /**
         * 需更新字段
         * <p>
         * 如果指定的【需更新字段】发生变化，则生成更新语句。
         */
        private List<String> updateColumns;

    }


}
